Amazon S3에 Amazon CloudFront OAI에 대한 액세스 권한을 부여할 때 발생하는 문제

Amazon S3에 Amazon CloudFront OAI에 대한 액세스 권한을 부여할 때 발생하는 문제

Amazon S3에 Amazon CloudFront에 대한 액세스 권한을 부여할 때 발생하는 문제를 확인하고, 해결 방안에 대해서 정리해 봤습니다.
Clock Icon2024.09.19

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 Amazon S3에 Amazon CloudFront에 대한 액세스 권한을 부여할 때 발생하는 문제를 확인하고, 해결 방안에 대해서 정리해 봤습니다.

문제 발생

jw-clfbukcet-error-1

현재 도쿄 리전에 S3 버킷을 생성한 상태입니다.

jw-clfbukcet-error-2

과거에는 Amazon CloudFront 배포 생성 화면에서 OAI를 선택하면 버킷 정책 업데이트를 AWS가 자동으로 수행할지, 직접 할지 선택할 수 있었습니다.

jw-clfbukcet-error-3

2024년 9월 기준으로 OAI를 선택하면 배포를 생성한 다음 정책 설명을 제공하다는 메시지가 출력됩니다.

jw-clfbukcet-error-5

배포를 생성하면, 정책 업데이트를 위해 S3 버킷으로 이동할 수 있습니다.

jw-clfbukcet-error-6

하지만, 전혀 다른 리전(생성한 S3 버킷은 도쿄 리전이지만, 시드니 리전으로 이동이 된다.)으로 이동이 되어버려 정책을 수정할 수 없습니다. 이전과 동일하게 버튼 클릭 하나만으로 AWS가 자동으로 정책을 업데이트 해주지는 않는 것 같습니다.

해결 방안

jw-clfbukcet-error-7

이를 인지한 것인지 AWS에서는 별도로「정책 복사」를 지원합니다.

해당 버튼을 클릭하면 S3 버킷과 CloudFront 배포의 Arn을 포함한 정책을 복사합니다.

{
        "Version": "2008-10-17",
        "Id": "PolicyForCloudFrontPrivateContent",
        "Statement": [
            {
                "Sid": "AllowCloudFrontServicePrincipal",
                "Effect": "Allow",
                "Principal": {
                    "Service": "cloudfront.amazonaws.com"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::xxxxxxxxx/*",
                "Condition": {
                    "StringEquals": {
                      "AWS:SourceArn": "arn:aws:cloudfront::xxxxxxxxx:distribution/xxxxxxxxx"
                    }
                }
            }
        ]
      }

이렇게 복사한 정책을 바탕으로 직접 S3 버킷의 정책을 업데이트할 필요가 있습니다. 전혀 다른 리전으로 이동되어 버리는 문제는 이전부터 있었기 떄문에 어쩔 수 없는 것 같습니다. 하지만, 이전에는 정책 업데이트가 클릭 한 번으로 간편하게 이루어졌던 점을 고려할 때, 이 기능이 사라진 것은 다소 아쉽다고 느껴집니다.

Amazon CloudFront OAI에 대한 정책 설정에 대해서는 아래 AWS 공식 문서에서도 확인할 수 있습니다.

https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html#create-oac-overview-s3

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 [email protected]로 보내주시면 감사하겠습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.